using System;
using System.Configuration;
using System.Data;
using System.Web.Configuration;
using System.Web.UI.HtmlControls;
using Anthem;
using App_Code;
using MinCultura.Sinic.Basicas;
using Common;
using MinCultura.Sipa.DataAccess.AgentesArtes;
using UsrControls;
using MinCultura.Sipa.DataAccess.EntidadesArtes;

namespace web.Controls
{
    /// <summary>
    /// Summary description for AgentesBasicos.
    /// </summary>
    public class EntidadesBasicos : SinicUserControl
    {
        protected TextBoxBase txtENT_NOMBRE;
        protected TextBoxBase txtSIGLA;
        protected TextBoxBase txtENT_ANO_CONSTITUCION;
        protected Label lblARCHIVO_IMAGEN;
        protected CheckBox chkEliminar;
        protected Label lblENT_RESENA;
        protected TextBoxBase txtENT_RESENA;
        protected TextBoxBase txtENT_NOMBRE_REPRESENTANTE_LEGAL;
        protected TextBoxBase txtENT_CARGO_REPRESENTANTE_LEGAL;
        protected TextBoxBase txtENT_NUM_DOCUMENTO_REPRESENTANTE;
        protected TextBoxBase txtENT_LUGAR_EXPEDICION;
        protected TextBoxBase txtENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL;
        protected TextBoxBase txtENT_NOMBRE_CONTACTO;
        protected TextBoxBase txtENT_CARGO_CONTACTO;
        protected TextBoxBase txtENT_ANO_VINCUALCION_CONTACTO;
        protected TextBoxBase txtENT_OBSERVACION_VALIDACION;
        protected RadioButtonList opcENT_CONCERTACION;
        protected RadioButtonList opcENT_EXPERIENCIA_EXITOSA;
        protected DropDownBase dpl_TIPODOCUMENTO_REPRESENTANTE;
        protected HtmlInputFile fileENT_IMAGEN;
        protected RequiredFieldValidator reqNombreRepresentante;
        protected RequiredFieldValidator reqNumeroDocRepresentante;
        protected RequiredFieldValidator reqNIT;
        protected RequiredFieldValidator reqLugarExpedicionDocRepres;
        protected RequiredFieldValidator reqAnioVinculacionRepres;
        protected RequiredFieldValidator reqNombreEntidad;
        protected RequiredFieldValidator reqNombreContacto;
        protected RequiredFieldValidator reqResena;
        protected RequiredFieldValidator reqCargoRepresentante;
        protected Label lblEstado;

        private const string m_strRutaArchivos = @"Sipa_Entidades_Artes\archivos\";


        #region - Campo de parametrizacion de requeridos

        public string Class_Requeridos_Representante = "camporequerido";
        protected Label lblObservValidacion;
        protected TextBoxNIT txtENT_NIT;
        public string Class_Requeridos_Nit = "camporequerido";

        #endregion

        #region - Eventos

        private void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Manager.Register(this);
                CargarMensajes();
            }
        }

        #endregion

        #region - Metodos

        public void CargarControles()
        {
            dpl_TIPODOCUMENTO_REPRESENTANTE.Items.Clear();

            TipoDocumentoIdentidadData dtIdentidad = new TipoDocumentoIdentidadData();
            TipoDocumentoIdentidad objIdentidad = new TipoDocumentoIdentidad(ConfigurationManager.AppSettings["Conn"]);
            dtIdentidad = objIdentidad.Buscar();
            dpl_TIPODOCUMENTO_REPRESENTANTE.DataSource = dtIdentidad;
            dpl_TIPODOCUMENTO_REPRESENTANTE.DataValueField = TipoDocumentoIdentidadData.DOC_ID_FIELD;
            dpl_TIPODOCUMENTO_REPRESENTANTE.DataTextField = TipoDocumentoIdentidadData.DOC_NOMBRE_FIELD;
            dpl_TIPODOCUMENTO_REPRESENTANTE.DataBind();
        }

        public EntidadesArtesData ObtenerDatos()
		{
			EntidadesArtesData objData = new EntidadesArtesData();

			DataRow fila = objData.NewRow();

			fila[EntidadesArtesData.ENT_ID_FIELD] = this.Identificador;
			fila[EntidadesArtesData.DOC_ID_REPRESENTANTE_FIELD] = dpl_TIPODOCUMENTO_REPRESENTANTE.SelectedValue;
			fila[EntidadesArtesData.ENT_NUM_DOCUMENTO_REPRESENTANTE_FIELD] = txtENT_NUM_DOCUMENTO_REPRESENTANTE.Text;
			fila[EntidadesArtesData.ENT_LUGAR_EXPEDICION_FIELD] = txtENT_LUGAR_EXPEDICION.Text;
			fila[EntidadesArtesData.ENT_FECHA_DILIGENCIAMIENTO_FIELD] = DateTime.Now;

            fila[EntidadesArtesData.ARD_ID_FIELD] = ConfigurationManager.AppSettings["IdentificadorAreaArtistica"].ToString();
           
			if (txtSIGLA.Text.Trim() != "")
				fila[EntidadesArtesData.ENT_NOMBRE_FIELD] = txtENT_NOMBRE.Text + " (" + txtSIGLA.Text + ")";
			else
				fila[EntidadesArtesData.ENT_NOMBRE_FIELD] = txtENT_NOMBRE.Text;

			fila[EntidadesArtesData.ENT_NIT_FIELD] = txtENT_NIT.Text;

			if (txtENT_ANO_CONSTITUCION.Text.Trim() != "")
				fila[EntidadesArtesData.ENT_ANO_CONSTITUCION_FIELD] = txtENT_ANO_CONSTITUCION.Text;


			fila[EntidadesArtesData.ENT_NOMBRE_REPRESENTANTE_LEGAL_FIELD] = txtENT_NOMBRE_REPRESENTANTE_LEGAL.Text;
			fila[EntidadesArtesData.ENT_CARGO_REPRESENTANTE_LEGAL_FIELD] = txtENT_CARGO_REPRESENTANTE_LEGAL.Text;

			if (txtENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL.Text.Trim() != "")
				fila[EntidadesArtesData.ENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL_FIELD] = txtENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL.Text;
			else
				fila[EntidadesArtesData.ENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL_FIELD] = DBNull.Value;

			fila[EntidadesArtesData.ENT_NOMBRE_CONTACTO_FIELD] = txtENT_NOMBRE_CONTACTO.Text;
			fila[EntidadesArtesData.ENT_CARGO_CONTACTO_FIELD] = txtENT_CARGO_CONTACTO.Text;

			if (txtENT_ANO_VINCUALCION_CONTACTO.Text.Trim() != "")
				fila[EntidadesArtesData.ENT_ANO_VINCUALCION_CONTACTO_FIELD] = txtENT_ANO_VINCUALCION_CONTACTO.Text;
			else
				fila[EntidadesArtesData.ENT_ANO_VINCUALCION_CONTACTO_FIELD] = DBNull.Value;

			fila[EntidadesArtesData.ENT_OBSERVACION_VALIDACION_FIELD] = txtENT_OBSERVACION_VALIDACION.Text;
			fila[EntidadesArtesData.ENT_CONCERTACION_FIELD] = opcENT_CONCERTACION.SelectedValue;
			fila[EntidadesArtesData.ENT_EXPERIENCIA_EXITOSA_FIELD] = opcENT_EXPERIENCIA_EXITOSA.SelectedValue;
			fila[EntidadesArtesData.ENT_FECHA_ACTUALIZACION_FIELD] = DateTime.Now;
			fila[EntidadesArtesData.ENT_RESENA_FIELD] = txtENT_RESENA.Text;

			//Imagen - falta resolver como pasar la imagen al sitio de SIPA
			//fila[EntidadesArtesData.ENT_IMAGEN_FIELD] = CargarArchivo(this.fileENT_IMAGEN);

			objData.addEntidadesArtes(fila);

			return objData;
		}

        public void CreaEntorno(DataRow fila)
        {
            CargarControles();

            this.Identificador = Convert.ToDecimal(fila[EntidadesArtesData.ENT_ID_FIELD]);

            dpl_TIPODOCUMENTO_REPRESENTANTE.SelectedValue = fila[EntidadesArtesData.DOC_ID_REPRESENTANTE_FIELD].ToString();

            txtENT_NUM_DOCUMENTO_REPRESENTANTE.Text = fila[EntidadesArtesData.ENT_NUM_DOCUMENTO_REPRESENTANTE_FIELD].ToString();

            txtENT_LUGAR_EXPEDICION.Text = fila[EntidadesArtesData.ENT_LUGAR_EXPEDICION_FIELD].ToString();

            string strNOMBRE = "";
            string strSIGLA = "";
            int intSIGLA_START = 0;
            int intSIGLA_LENGTH = 0;

            if (fila[EntidadesArtesData.ENT_NOMBRE_FIELD].ToString().IndexOf("(") >= 0)
            {
                strNOMBRE = fila[EntidadesArtesData.ENT_NOMBRE_FIELD].ToString().Substring(0, fila[EntidadesArtesData.ENT_NOMBRE_FIELD].ToString().IndexOf("(") - 1);

                intSIGLA_START = fila[EntidadesArtesData.ENT_NOMBRE_FIELD].ToString().IndexOf("(") + 1;
                intSIGLA_LENGTH = (fila[EntidadesArtesData.ENT_NOMBRE_FIELD].ToString().Length - intSIGLA_START) - 1;

                strSIGLA = fila[EntidadesArtesData.ENT_NOMBRE_FIELD].ToString().Substring(intSIGLA_START, intSIGLA_LENGTH);

                txtENT_NOMBRE.Text = strNOMBRE;

                txtSIGLA.Text = strSIGLA;
            }
            else
            {
                txtENT_NOMBRE.Text = fila[EntidadesArtesData.ENT_NOMBRE_FIELD].ToString();
            }

            if (fila[EntidadesArtesData.ENT_NIT_FIELD] != DBNull.Value)
                txtENT_NIT.Text = fila[EntidadesArtesData.ENT_NIT_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_ANO_CONSTITUCION_FIELD] != null)
                txtENT_ANO_CONSTITUCION.Text = fila[EntidadesArtesData.ENT_ANO_CONSTITUCION_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_NOMBRE_REPRESENTANTE_LEGAL_FIELD] != DBNull.Value)
                txtENT_NOMBRE_REPRESENTANTE_LEGAL.Text = fila[EntidadesArtesData.ENT_NOMBRE_REPRESENTANTE_LEGAL_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_CARGO_REPRESENTANTE_LEGAL_FIELD] != DBNull.Value)
                txtENT_CARGO_REPRESENTANTE_LEGAL.Text = fila[EntidadesArtesData.ENT_CARGO_REPRESENTANTE_LEGAL_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL_FIELD] != DBNull.Value)
                txtENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL.Text = fila[EntidadesArtesData.ENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_NOMBRE_CONTACTO_FIELD] != DBNull.Value)
                txtENT_NOMBRE_CONTACTO.Text = fila[EntidadesArtesData.ENT_NOMBRE_CONTACTO_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_CARGO_CONTACTO_FIELD] != DBNull.Value)
                txtENT_CARGO_CONTACTO.Text = fila[EntidadesArtesData.ENT_CARGO_CONTACTO_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_ANO_VINCUALCION_CONTACTO_FIELD] != DBNull.Value)
                txtENT_ANO_VINCUALCION_CONTACTO.Text = fila[EntidadesArtesData.ENT_ANO_VINCUALCION_CONTACTO_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_OBSERVACION_VALIDACION_FIELD] != DBNull.Value)
                txtENT_OBSERVACION_VALIDACION.Text = fila[EntidadesArtesData.ENT_OBSERVACION_VALIDACION_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_CONCERTACION_FIELD] != DBNull.Value)
                opcENT_CONCERTACION.SelectedValue = fila[EntidadesArtesData.ENT_CONCERTACION_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_EXPERIENCIA_EXITOSA_FIELD] != DBNull.Value)
                opcENT_EXPERIENCIA_EXITOSA.SelectedValue = fila[EntidadesArtesData.ENT_EXPERIENCIA_EXITOSA_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_IMAGEN_FIELD] != DBNull.Value &&
                fila[EntidadesArtesData.ENT_IMAGEN_FIELD].ToString() != "")
            {
                lblARCHIVO_IMAGEN.Text = fila[EntidadesArtesData.ENT_IMAGEN_FIELD].ToString();
                chkEliminar.Visible = true;
            }
            else
                chkEliminar.Visible = false;

            if (fila[EntidadesArtesData.ENT_RESENA_FIELD] != null)
                txtENT_RESENA.Text = fila[EntidadesArtesData.ENT_RESENA_FIELD].ToString();

            if (fila[EntidadesArtesData.ENT_ESTADO_FIELD] != null)
                lblEstado.Text = EnumHelper.GetValueByDescription(typeof(Utilidad.Estados), fila[EntidadesArtesData.ENT_ESTADO_FIELD].ToString());
        }

        public void CargarCampoNit(string pstrNit)
        {
            txtENT_NIT.Text = pstrNit;
            txtENT_NIT.Enabled = false;
        }

        private void CargarMensajes()
        {
            reqNombreEntidad.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_NOMBRE.ToolTip);
            reqNIT.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_NIT.ToolTip);
            reqResena.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_RESENA.ToolTip);
            reqAnioVinculacionRepres.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_ANO_VINCUALCION_REPRESENTANTE_LEGAL.ToolTip);
            reqLugarExpedicionDocRepres.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_LUGAR_EXPEDICION.ToolTip);
            reqNumeroDocRepresentante.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_NUM_DOCUMENTO_REPRESENTANTE.ToolTip);
            reqCargoRepresentante.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_CARGO_REPRESENTANTE_LEGAL.ToolTip);
            reqNombreRepresentante.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_NOMBRE_REPRESENTANTE_LEGAL.ToolTip);
            reqNombreContacto.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtENT_NOMBRE_CONTACTO.ToolTip);
        }
        #endregion

        #region - Propiedades

        public bool ObservacionVisible
        {
            set
            {
                txtENT_OBSERVACION_VALIDACION.Visible = false;
                txtENT_OBSERVACION_VALIDACION.AutoUpdateAfterCallBack = true;
                lblObservValidacion.Visible = false;
                lblObservValidacion.AutoUpdateAfterCallBack = true;
            }
        }

        public decimal Identificador
        {
            get
            {
                if (ViewState["Identificador"] != null)
                    return ((decimal)ViewState["Identificador"]);
                else
                    return (0);
            }
            set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
        }

        public bool RequeridoRepresentante
        {
            set
            {
                reqNombreRepresentante.Visible = value;
                reqCargoRepresentante.Visible = value;
                reqNumeroDocRepresentante.Visible = value;
                reqLugarExpedicionDocRepres.Visible = value;
                reqAnioVinculacionRepres.Visible = value;
                if (value)
                    Class_Requeridos_Representante = "camporequerido";
                else
                    Class_Requeridos_Representante = "campo";

            }
        }

        public bool RequeridoNit
        {
            set
            {
                reqNIT.Visible = value;
                if (value)
                    Class_Requeridos_Nit = "camporequerido";
                else
                    Class_Requeridos_Nit = "campo";

            }
        }

        public string NombreEntidad
        {
            get { return txtENT_NOMBRE.Text; }
            set { txtENT_NOMBRE.Text = value; }
        }

        public string NitEntidad
        {
            get { return txtENT_NIT.Text; }
            set { txtENT_NIT.Text = value; }
        }

        private EntidadesArtesData EntidadesArtesDataTable
        {
            get
            {
                EntidadesArtesData dtEntidadesArtesData = null;

                if (Cache[EntidadesArtesData.ART_ENTIDADES_ARTES_TABLE + Session.SessionID] != null)
                {
                    dtEntidadesArtesData =
                        (EntidadesArtesData)Cache[EntidadesArtesData.ART_ENTIDADES_ARTES_TABLE + Session.SessionID];
                }
                return dtEntidadesArtesData;
            }
        }

        public EntidadesArtesData DatosIdentificacionData
        {
            get
            {
                return ObtenerDatos();
            }
            set
            {
                if (value != null && value.Rows.Count > 0)
                {
                    CreaEntorno(value.Rows[0]);
                }
            }
        }

        public string EstadoRegistro
        {
            set { lblEstado.Text = value; }
        }

        public HtmlInputFile FileImagenEntidad
        {
            get { return fileENT_IMAGEN; }
        }

        public string NombreArchivo
        {
            get { return lblARCHIVO_IMAGEN.Text; }
            set
            {

                lblARCHIVO_IMAGEN.Text = value;
                lblARCHIVO_IMAGEN.AutoUpdateAfterCallBack = true;
                if (lblARCHIVO_IMAGEN.Text != "")
                {
                    lblARCHIVO_IMAGEN.Visible = true;
                    chkEliminar.Visible = true;
                }
            }
        }

        public bool EliminarArchivo
        {
            get { return chkEliminar.Checked; }
        }
        #endregion

        #region Web Form Designer generated code

        protected override void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }

        private void InitializeComponent()
        {
            this.Load += new EventHandler(this.Page_Load);

        }

        #endregion
    }
}